home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d963.lha / SIOD / scm / sets2.scm < prev    next >
Text File  |  1993-01-02  |  1KB  |  30 lines

  1. (define (adjoin-set x set)
  2.         (cond ((empty-tree? set) (cons x the-empty-set))
  3.               ((> x (car set)) (cons (car set) (adjoin-set x (cdr set))))
  4.               ((= x (car set)) set)
  5.               (else (cons x (cdr set)))))
  6.  
  7. (define (element-of-set? x set)
  8.         (cond ((empty-set? set) #f)
  9.               ((> x (car set)) #f)
  10.               ((eqv? x (car set)) #t)
  11.               (else (element-of-set x (cdr set)))))
  12.      
  13. (define (union-set set1 set2)
  14.         (cond ((empty-set? set1) set2)
  15.               ((< (car set1) (car set2))
  16.                   (union-set (cdr set1) (cons (car set1) set2)))
  17.               (else (union-set (cdr set1) (adjoin-set (car set1) set2)))))
  18.  
  19. (define (intersection-set set1 set2)
  20.         (cond ((empty-set? set1) the-empty-set)
  21.               ((empty-set? set2) the-empty-set)
  22.               ((element-of-set? (car set1) set2)
  23.                       (cons (car set1) (intersection-set (cdr set1) set2)))
  24.               (else (intersection-set (cdr set1) set2))))
  25.  
  26. (define (empty-set? x)
  27.         (eq? x the-empty-set))
  28.  
  29. (define the-empty-set 'empty-set)
  30.